﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>获取剪贴板 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 获取剪贴板 function creates an 对象 containing everything on the clipboard (such as pictures and formatting)." />
<meta name="ahk:equiv-v1" content="misc/A_Clipboard.htm#ClipboardAll" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>获取剪贴板</h1>

<p>创建一个包含剪贴板上的所有内容的对象(如图片和格式).</p>
<pre class="Syntax">ClipSaved := <span class="func">获取剪贴板</span>(<span class="optional">Data, Size</span>)</pre>

<h2 id="Parameters">参数</h2>
<p>省略这两个参数来检索剪贴板的当前内容. 否则, 指定一个或两个参数来创建包含给定二进制剪贴板数据的对象.</p>
<dl>
  <dt>Data</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#objects">对象</a>或<a href="../Concepts.htm#numbers">整数</a></p>
    <p>类<a href="../objects/Buffer.htm">缓冲</a>对象, 或为二进制数据地址的纯整数. 数据必须采用特定的格式, 因此通常源自之前对 获取剪贴板 的调用. 请参阅下面的<a href="#ExFile">示例 #2</a>.</p>
  </dd>
  <dt>Size</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>数据要使用的字节数. 当 <em>Data</em> 是对象时, 这是可选的.</p>
  </dd>
</dl>

<h2 id="clipboardall-object">返回值</h2>
<p>类型: <a href="../Concepts.htm#objects">对象</a></p>
<p>函数返回 获取剪贴板 对象的<a href="../Concepts.htm#references-to-objects">引用</a> , 它有两个属性(继承自 <a href="../objects/Buffer.htm">Buffer</a>):</p>
<ul>
  <li><a href="../objects/Buffer.htm#Ptr">Ptr</a>: 对象包含的数据的地址. 此地址在释放对象之前有效.</li>
  <li><a href="../objects/Buffer.htm#Size">Size</a>: 原始二进制数据的大小, 以字节为单位.</li>
</ul>

<h2 id="Remarks">备注</h2>
<p>内置变量 <a href="../misc/A_Clipboard.htm">内_剪贴板</a> 包含以纯文本形式表示的 Windows 剪贴板的当前内容.</p>
<p><em>获取剪贴板</em> 函数最常用来保存剪贴板的内容, 以便脚本可以临时使用剪贴板进行操作. 当操作完成时, 脚本恢复原来的剪贴板内容, 如<a href="#ExVar">示例 #1</a> 和<a href="#ExFile">示例 #2</a> 所示.</p>
<p>如果 <em>获取剪贴板</em> 不能检索剪贴板上的一个或多个数据对象(格式), 它们将被省略, 但所有剩余的对象将被存储.</p>
<p><a href="ClipWait.htm">监听剪贴板</a> 可用于检测剪贴板何时包含数据(可选包括非文本数据).</p>
<p>数据属性(见上面) 返回的二进制数据在内部由 4 字节格式类型, 接着 4 字节数据块大小, 而后是该格式的数据块组成. 如果剪贴板包含不止一种格式(几乎总是这样), 则重复这三项, 直到包含所有格式为止. 数据以 4 字节格式类型的 0 结束.</p>
<p>已知限制: 当 Microsoft Excel 的单元格被复制到剪贴板时, 使用 <em>获取剪贴板</em> 可能会导致 Excel 弹出 "找不到打印机" 的对话框.</p>

<h2 id="Related">相关</h2>
<p><a href="../misc/A_Clipboard.htm">内_剪贴板</a>, <a href="ClipWait.htm">监听剪贴板</a>, <a href="OnClipboardChange.htm">在剪贴板内容改变时</a>, <a href="_ClipboardTimeout.htm">#剪贴板超时</a>, <a href="../objects/Buffer.htm">Buffer</a></p>

<h2 id="Examples">示例</h2>

<div class="ex" id="ExVar">
<p><a href="#ExVar">#1</a>: 使用变量保存和恢复剪贴板上的所有内容:</p>
<pre>ClipSaved := 获取剪贴板()   <em>; 把整个剪贴板保存到您选择的变量中.
; ... 这里临时使用剪贴板, 比如快速粘贴大量文本 ...</em>
内_剪贴板 := ClipSaved   <em>; 还原剪贴板. 注意这里使用 <i>内_剪贴板</i>(而不是 <i>获取剪贴板</i>).</em>
ClipSaved := ""  <em>; 在剪贴板含有大量内容时释放内存.</em></pre>
</div>

<div class="ex" id="ExFile">
<p><a href="#ExFile">#2</a>: 使用文件保存和还原剪贴板上的所有内容:</p>
<pre><em>; 选项 1: 删除任何现有文件, 然后使用 附加.</em>
<a href="FileDelete.htm">文件删除</a> "C:\Company Logo.clip"
<a href="FileAppend.htm">附加</a> 获取剪贴板(), "Company Logo.clip" <em>; 文件扩展名无关紧要.</em>

<em>; 选项 2: 使用 打开文件 的 overwrite 模式和 File.RawWrite.</em>
ClipData := 获取剪贴板()
<a href="FileOpen.htm">打开文件</a>("Company Logo.clip", "w").<a href="../objects/File.htm#RawWrite">RawWrite</a>(ClipData)</pre>
<p>要稍后将文件加载回剪贴板(或变量), 请遵循以下示例:</p>
<pre>ClipData := 读文件("Company Logo.clip", "RAW")  <em>; 在这种情况下, 读文件 返回缓冲.</em>
内_剪贴板 := 获取剪贴板(ClipData)  <em>; 将缓冲转换到 获取剪贴板 并赋值.</em></pre>
</div>

</body>
</html>